<!DOCTYPE HTML PUBLIC "-//w3c//dtd xhtml 1.1//en" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">
<HTML>
	<HEAD>
		<title>Seguros Continente</title>
		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
		<script type="text/javascript">
		
		
			/**
			 * timeout
			 * Executa a funcao 1 vez depois do tempo dado
			 * @param {Number, Bollean} Tempo em segundos para a chamada, se ja existir um timeout para a funcao e o parametro for 'false' o metodo limpa o timeout e retorn false;
			 * @param {Node, Object} Escopo da funcao a ser executada
			 * @param {...} Demais parametros serao repassados a funcao
			 **/
			Function.prototype.timeout = function(time,scope,args){
				
				if(this.TIMEOUT_ID){
					window.clearTimeout(this.TIMEOUT_ID);
					if(time==false) return false;
				}
				
				function F(){
					var a = arguments.callee; 
					a.run.apply(a.scope,a.args);
					a.run.TIMEOUT_ID = -1;
				}
				F.scope = scope||window;	//scope 
				F.run = this;	//function to be executed by timeout
				F.args = args||[];	//the rest of args
				F.args[F.args.length] = true;	//flag: executed by 'callAfter'
				
				return this.TIMEOUT_ID = window.setTimeout(F, (time||1)*1000);
			}

			
			function TesteTimeout(a,b,c,executedByTimeout){

				if(!executedByTimeout){
					arguments.callee.timeout(1,this,[10,20,30]);
				}
					
				console.log(arguments);
			
			}
			
			TesteTimeout('a','b','c')
			TesteTimeout('d','e','f')
			TesteTimeout('g','h','i')
			
			
			
			/**
			 * interval
			 * Executa a funcao diversas vezes
			 * Se a funcao chamada retornar false automaticamente ela nao e' mais chamada
			 * @param {Number, Bollean} Tempo em segundos para a chamada, se ja existir um timeout para a funcao e o parametro for 'false' o metodo limpa o timeout e retorn false;
			 * @param {Node, Object} Escopo da funcao a ser executada
			 * @param {...} Demais parametros serao repassados a funcao
			 **/
			Function.prototype.interval = function(time,scope,args){
				
				if(this.INTERVAL_ID){
					window.clearInterval(this.INTERVAL_ID);
					if(time==false) return false;
				}
				
				function F(){
					var a = arguments.callee; 
					if(a.run.apply(a.scope,a.args)==false){
						window.clearInteval(a.run.INTERVAL_ID);
						a.run.INTERVAL_ID = -1;
					}
				}
				F.scope = scope||window;	//scope 
				F.run = this;	//function to be executed by timeout
				F.args = args || [];	//the rest of args
				F.args[F.args.length] = true;	//flag: executed by 'interval'
				
				return this.INTERVAL_ID = window.setInterval(F, (time||1)*1000);
			}
	
	
			function TesteInterval(a,b,c,executedByInteval){

				if(!executedByInteval){
					arguments.callee.interval(1,this,[1,2,3]);
				}
					
				console.info(arguments);
			
			}
			
			//TesteInterval('a','b','c')
			//TesteInterval('d','e','f')
			//TesteInterval('g','h','i')
	
	
	</script>
	
	</HEAD>
	<body>

		
	</body>
</HTML>
